// COMPILER BLOCK -->
import { DEBUG } from "./config.js";
// <-- COMPILER BLOCK
import { is_string } from "./common.js";
import { IndexOptions } from "./type.js";

/**
 * @type {Object<string, IndexOptions>}
 * @const
 */
const presets = {

    "memory": {
        resolution: 1
    },

    "performance": {
        resolution: 3,
        fastupdate: true,
        context: {
            depth: 1,
            resolution: 1
        }
    },

    "match": {
        tokenize: "full"
    },

    "score": {
        resolution: 9,
        context: {
            depth: 2,
            resolution: 3
        }
    }
};

/**
 *
 * @param {IndexOptions|string} options
 * @return {IndexOptions}
 */

export default function apply_preset(options){

    const preset = /** @type string */ (
        is_string(options)
            ? options
            : options.preset
    );

    if(preset){
        if(DEBUG && !presets[preset]){
            console.warn("Preset not found: " + preset);
        }
        options = /** @type IndexOptions */ (
            Object.assign({}, presets[preset], /** @type {Object} */ (options))
        );
    }

    return /** @type IndexOptions */ (options);
}
